package io;

import java.io.*;
import java.nio.charset.StandardCharsets;

/**   缓冲字符流：java.io.BufferedWriter和java.io.BufferedReader
 * 缓冲字符流内部默认有一个8192长的char数组,可以保证读写文本数据的效率
 *
 *
 * java.io,PrintWriter是具有自动行刷新的缓冲字符输出流      -----常用
 * 实际上它的缓冲操作还是依靠BufferedWriter实现的，它的内部总是连接着BufferedWriter
 * 只不过它增加了两个新功能：按行写字符串，自动行刷新*/
public class PwDemo {
    public static void main(String[] args) throws IOException {
       /** PrintWriter pw = new PrintWriter("pw.txt");
        pw.println("她也许在某个地点");
        pw.println("也许吧");
        System.out.println("数据写出完毕");
        pw.close();*/
       FileOutputStream fos = new FileOutputStream("pw2.txt");
       //文件流：低级流/字节流  作用：连接程序和文件管道  负责将字节写入到文件中
       OutputStreamWriter osw =  new OutputStreamWriter(fos, StandardCharsets.UTF_8);
       //转换流：高级流/字符流  作用：将字节转换为字符  负责将字符写出到文件
        BufferedWriter bw = new BufferedWriter(osw);
       //缓冲流：高级流/字符流  作用：提高字符的写出效率  内部维护8192长的(char)数组 总是以块写操作保证写完出字符的效率
        PrintWriter  pw = new PrintWriter(bw);
        //高级流/字符流  作用  行刷新    按行写出字符串(println) 自动行刷新()
         pw.println("她也许在某个地点");
         pw.println("也许吧");
         System.out.println("数据写出完毕");
         pw.close();
         // 流连接中创建PrintWriter
         // java程序创建PrintWriter时，会创建一个BufferedWriter对象，BufferedWriter对象创建一个OutputStreamWriter对象，
         // java程序-------->PrintWriter-------->缓冲字节流 char cb 8192------>转换流  char -->byte   ----->文件流------->文件



    }
}
